lang/README.ru.md 077d56ffdfc1ca4dde68d854216dc2552cbc2424 (077d56ff) Text, 13.38 KB
Tc9d1d9# Reticulum MeshChatX
[Tff7b72English README](Te6edf3../README.md) | [Tff7b72Deutsch](Te6edf3README.de.md) | [Tff7b72Italiano](Te6edf3README.it.md) | [Tff7b72中文](Te6edf3README.zh.md) | [Tff7b72日本語](Te6edf3README.ja.md)
Существенно доработанный и функционально расширенный форк Reticulum MeshChat от Liam Cottle.
Этот проект независим от оригинального Reticulum MeshChat и не связан с ним.
Tff7b72- Сайт: [Tff7b72meshchatx.com](Te6edf3https://meshchatx.com)
Tff7b72- Исходный код: [Tff7b72git.quad4.io/RNS-Things/MeshChatX](Te6edf3https://git.quad4.io/RNS-Things/MeshChatX)
Tff7b72- Официальное зеркало: [Tff7b72github.com/Sudo-Ivan/MeshChatX](Te6edf3https://github.com/Sudo-Ivan/MeshChatX) — пока также используется для сборок Windows и macOS.
Tff7b72- Релизы: [Tff7b72git.quad4.io/RNS-Things/MeshChatX/releases](Te6edf3https://git.quad4.io/RNS-Things/MeshChatX/releases)
Tff7b72- Журнал изменений: [Ta5d6ff`CHANGELOG.md`](../CHANGELOG.md)
Tff7b72- TODO: [Tff7b72Boards](Te6edf3https://git.quad4.io/RNS-Things/MeshChatX/projects)
Tc9d1d9## Важные отличия от Reticulum MeshChat
Tff7b72- Используется LXST
Tff7b72- Peewee ORM заменён на прямой SQL
Tff7b72- Axios заменён на нативный Ta5d6ff`fetch`
Tff7b72- Актуальный Electron
Tff7b72- Колёса Ta5d6ff`.whl` с веб-сервером и встроенным фронтендом для разных сценариев развёртывания
Tff7b72- i18n
Tff7b72- PNPM и Poetry для зависимостей
Tff7b72> [!WARNING]
Tff7b72> MeshChatX не гарантирует совместимость данных со старыми версиями Reticulum MeshChat. Сделайте резервную копию перед миграцией или тестированием.
Tff7b72> [!WARNING]
Tff7b72> Устаревшие системы пока не полностью поддерживаются. Текущие требования: Python `>=3.11` и Node `>=24`.
Tc9d1d9## Требования
Tff7b72- Python Ta5d6ff`>=3.11` (из Ta5d6ff`pyproject.toml`)
Tff7b72- Node.js Ta5d6ff`>=24` (из Ta5d6ff`package.json`)
Tff7b72- pnpm Ta5d6ff`10.32.1` (из Ta5d6ff`package.json`)
Tff7b72- Poetry (используется в Ta5d6ff`Taskfile.yml` и CI)
Ta5d6ff```Ta5d6ffbash
task install
task lint:all
task test:all
task build:all
Ta5d6ff```
Tc9d1d9## Способы установки
Выберите способ в соответствии со средой и форматом пакета.
| Метод | Включает фронтенд | Архитектуры | Лучше всего для |
| --------------------- | ------------------- | ---------------------------------------- | ------------------------------------- |
| Docker-образ | Да | Ta5d6ff`linux/amd64`, Ta5d6ff`linux/arm64` | Быстрый запуск на серверах Linux |
| Python wheel (Ta5d6ff`.whl`) | Да | Любая архитектура, поддерживаемая Python | Безголовый/веб-сервер без сборки Node |
| Linux AppImage | Да | Ta5d6ff`x64`, Ta5d6ff`arm64` | Портативное использование на ПК |
| Debian-пакет (Ta5d6ff`.deb`) | Да | Ta5d6ff`x64`, Ta5d6ff`arm64` | Установка на Debian/Ubuntu |
| RPM-пакет (Ta5d6ff`.rpm`) | Да | Зависит от CI | Fedora/RHEL/openSUSE |
| Из исходников | Собирается локально | Архитектура хоста | Разработка и кастомные сборки |
Примечания:
Tff7b72- Релизный workflow явно собирает Linux Ta5d6ff`x64` и Ta5d6ff`arm64` AppImage + DEB.
Tff7b72- RPM также собирается при попытке и загружается при успехе.
Tc9d1d9## Быстрый старт: Docker
Ta5d6ff```Ta5d6ffbash
docker compose up -d
Ta5d6ff```
Compose-файл по умолчанию:
Tff7b72- Ta5d6ff`127.0.0.1:8000` на хосте -> порт Ta5d6ff`8000` контейнера
Tff7b72- Ta5d6ff`./meshchat-config` -> Ta5d6ff`/config` для данных
Если возникают ошибки прав доступа:
Ta5d6ff```Ta5d6ffbash
sudo chown -R T79c0ff1000:1000 ./meshchat-config
Ta5d6ff```
Tc9d1d9## Установка из релизных артефактов
Tc9d1d9### 1) Linux AppImage (x64/arm64)
Tff7b721. Скачайте Ta5d6ff`ReticulumMeshChatX-v<версия>-linux-<арх>.AppImage` из релизов.
Tff7b722. Сделайте исполняемым и запустите:
Ta5d6ff```Ta5d6ffbash
chmod +x ./ReticulumMeshChatX-v*-linux-*.AppImage
./ReticulumMeshChatX-v*-linux-*.AppImage
Ta5d6ff```
Tc9d1d9### 2) Debian/Ubuntu `.deb` (x64/arm64)
Tff7b721. Скачайте Ta5d6ff`ReticulumMeshChatX-v<версия>-linux-<арх>.deb`.
Tff7b722. Установите:
Ta5d6ff```Ta5d6ffbash
sudo apt install ./ReticulumMeshChatX-v*-linux-*.deb
Ta5d6ff```
Tc9d1d9### 3) RPM-системы
Tff7b721. Скачайте Ta5d6ff`ReticulumMeshChatX-v<версия>-linux-<арх>.rpm`, если есть в релизе.
Tff7b722. Установите:
Ta5d6ff```Ta5d6ffbash
sudo rpm -Uvh ./ReticulumMeshChatX-v*-linux-*.rpm
Ta5d6ff```
Tc9d1d9### 4) Python wheel (`.whl`)
В релизных wheel включены собранные веб-ресурсы.
Ta5d6ff```Ta5d6ffbash
pip install ./reticulum_meshchatx-*-py3-none-any.whl
meshchatx --headless
Ta5d6ff```
Ta5d6ff`pipx` также поддерживается:
Ta5d6ff```Ta5d6ffbash
pipx install ./reticulum_meshchatx-*-py3-none-any.whl
Ta5d6ff```
Tc9d1d9## Запуск из исходников (режим веб-сервера)
Для разработки или локальной сборки.
Ta5d6ff```Ta5d6ffbash
git clone https://git.quad4.io/RNS-Things/MeshChatX.git
Tffa657cd MeshChatX
corepack Tffa657enable
pnpm install
pip install poetry
poetry install
pnpm run build-frontend
poetry run meshchatx --headless --host T79c0ff127.0.0.1
Ta5d6ff```
Tc9d1d9## Запуск в песочнице (Linux)
Чтобы запускать нативный Ta5d6ff`meshchatx` (псевдоним: Ta5d6ff`meshchat`) с дополнительной изоляцией файловой системы, можно использовать **Firejail** или **Bubblewrap** (Ta5d6ff`bwrap`), сохраняя обычный сетевой доступ для Reticulum и веб-интерфейса. Полные примеры (pip/pipx, Poetry, USB-serial) в:
Tff7b72- [Ta5d6ff`docs/meshchatx_linux_sandbox.md`](../docs/meshchatx_linux_sandbox.md)
Та же страница отображается во встроенной **Документации** (документация MeshChatX), когда она отдаётся из Ta5d6ff`meshchatx-docs`.
Tc9d1d9## Сборка настольных пакетов из исходников
Скрипты заданы в Ta5d6ff`package.json` и Ta5d6ff`Taskfile.yml`.
Tc9d1d9### Linux x64 AppImage + DEB
Ta5d6ff```Ta5d6ffbash
pnpm run dist:linux-x64
Ta5d6ff```
Tc9d1d9### Linux arm64 AppImage + DEB
Ta5d6ff```Ta5d6ffbash
pnpm run dist:linux-arm64
Ta5d6ff```
Tc9d1d9### RPM
Ta5d6ff```Ta5d6ffbash
pnpm run dist:rpm
Ta5d6ff```
Через Task:
Ta5d6ff```Ta5d6ffbash
task dist:fe:rpm
Ta5d6ff```
Tc9d1d9## Поддержка архитектур
Tff7b72- Docker: Ta5d6ff`amd64`, Ta5d6ff`arm64`
Tff7b72- Linux AppImage: Ta5d6ff`x64`, Ta5d6ff`arm64`
Tff7b72- Linux DEB: Ta5d6ff`x64`, Ta5d6ff`arm64`
Tff7b72- Windows: Ta5d6ff`x64`, Ta5d6ff`arm64` (скрипты сборки есть)
Tff7b72- macOS: скрипты сборки (Ta5d6ff`arm64`, Ta5d6ff`universal`) для локальных сред
Tff7b72- Android: проект и CI в репозитории
Tc9d1d9## Android
Tff7b72- [Ta5d6ff`docs/meshchatx_on_android_with_termux.md`](../docs/meshchatx_on_android_with_termux.md)
Tff7b72- [Ta5d6ff`android/README.md`](../android/README.md)
Tc9d1d9## Конфигурация
| Аргумент | Переменная окружения | По умолчанию | Описание |
| -------------------------- | ---------------------------------------- | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------- |
| Ta5d6ff`--host` | Ta5d6ff`MESHCHAT_HOST` | Ta5d6ff`127.0.0.1` | Адрес привязки веб-сервера |
| Ta5d6ff`--port` | Ta5d6ff`MESHCHAT_PORT` | Ta5d6ff`8000` | Порт веб-сервера |
| Ta5d6ff`--no-https` | Ta5d6ff`MESHCHAT_NO_HTTPS` | Ta5d6ff`false` | Отключить HTTPS |
| Ta5d6ff`--ssl-cert` / Ta5d6ff`--ssl-key` | Ta5d6ff`MESHCHAT_SSL_CERT` / Ta5d6ff`MESHCHAT_SSL_KEY` | (нет) | Пути к PEM-сертификату и ключу; задаются вместе. Переопределяют автосгенерированные сертификаты в каталоге Ta5d6ff`ssl/` у идентичности. |
| Ta5d6ff`--headless` | Ta5d6ff`MESHCHAT_HEADLESS` | Ta5d6ff`false` | Не открывать браузер автоматически |
| Ta5d6ff`--auth` | Ta5d6ff`MESHCHAT_AUTH` | Ta5d6ff`false` | Базовая аутентификация |
| Ta5d6ff`--storage-dir` | Ta5d6ff`MESHCHAT_STORAGE_DIR` | Ta5d6ff`./storage` | Каталог данных |
| Ta5d6ff`--public-dir` | Ta5d6ff`MESHCHAT_PUBLIC_DIR` | авто/bundled | Каталог фронтенда (для установок без встроенных ресурсов) |
Tc9d1d9## Ветки
| Ветка | Назначение |
| -------- | ------------------------------------------------------------------------- |
| Ta5d6ff`master` | Стабильные релизы. Только код для продакшена. |
| Ta5d6ff`dev` | Активная разработка. Возможны нестабильные или неполные изменения. |
Tc9d1d9## Разработка
Типичные задачи из Ta5d6ff`Taskfile.yml`:
Ta5d6ff```Ta5d6ffbash
task install
task lint:all
task test:all
task build:all
Ta5d6ff```
Сокращения Ta5d6ff`Makefile`:
| Команда | Описание |
| -------------- | ------------------------------------------ |
| Ta5d6ff`make install` | Установить зависимости pnpm и poetry |
| Ta5d6ff`make run` | Запуск MeshChatX через poetry |
| Ta5d6ff`make build` | Сборка фронтенда |
| Ta5d6ff`make lint` | eslint и ruff |
| Ta5d6ff`make test` | Тесты фронтенда и бэкенда |
| Ta5d6ff`make clean` | Удалить артефакты сборки и node_modules |
Tc9d1d9## Версионирование
Текущая версия в репозитории: Ta5d6ff`4.4.0`.
Tff7b72- Источник версии JS/Electron — Ta5d6ff`package.json`.
Tff7b72- Ta5d6ff`meshchatx/src/version.py` синхронизируется из Ta5d6ff`package.json`:
Ta5d6ff```Ta5d6ffbash
pnpm run version:sync
Ta5d6ff```
Для согласованных релизов выравнивайте поля версий где нужно (Ta5d6ff`package.json`, Ta5d6ff`pyproject.toml`, Ta5d6ff`meshchatx/__init__.py`).
Tc9d1d9## Безопасность
Tff7b72- [Ta5d6ff`SECURITY.md`](../SECURITY.md)
Tff7b72- Встроенные проверки целостности и HTTPS/WSS по умолчанию в приложении
Tff7b72- CI-сканирование в Ta5d6ff`.gitea/workflows/`
Tc9d1d9## Добавление языка
Локали обнаруживаются автоматически. Достаточно одного JSON-файла:
Tff7b721. Сгенерировать пустой шаблон из Ta5d6ff`en.json`:
Ta5d6ff```Ta5d6ffbash
python scripts/generate_locale_template.py
Ta5d6ff```
Создаётся Ta5d6ff`locales.json` со всеми ключами и пустыми строками.
Tff7b722. Переименовать и переместить:
Ta5d6ff```Ta5d6ffbash
mv locales.json meshchatx/src/frontend/locales/xx.json
Ta5d6ff```
Tff7b723. В начале файла задать Ta5d6ff`_languageName` — нативное имя языка (например Ta5d6ff`"Espanol"`, Ta5d6ff`"Francais"`). Отображается в выборе языка.
Tff7b724. Перевести остальные значения.
Tff7b725. Проверить ключи: Ta5d6ff`pnpm test -- tests/frontend/i18n.test.js --run`
Других изменений кода не требуется. Приложение, селектор языка и тесты используют Ta5d6ff`meshchatx/src/frontend/locales/` на этапе сборки.
Tc9d1d9## Авторы
Tff7b72- [Tff7b72Liam Cottle](Te6edf3https://github.com/liamcottle) — оригинальный Reticulum MeshChat
Tff7b72- [Tff7b72RFnexus](Te6edf3https://github.com/RFnexus) — парсер Micron (JavaScript)
Tff7b72- [Tff7b72markqvist](Te6edf3https://github.com/markqvist) — Reticulum, LXMF, LXST
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────